<?php

class egresos extends Baseegresos
{
    //Declaracion de las variables y los metodos para acceso actuales y anteriores
        protected $id_old;
        protected $detalles_del_pago_old;
	protected $importe_old;
	protected $CategoriaEgresosId_old;
	protected $sf_guard_user_old;
	protected $created_at_old;

	//Metodos Geters
        //fin de los metodos geters
        //Metodos seters
        //fin de los metodos seters
	//Reescritura de los metodos seter
        public function setId($v){
            $this->id_old = $this->getId();
            return parent::setId($v);
        }
        public function setDetallesDelPago($v)
	    {
                $this->detalles_del_pago_old = ($this->getDetallesDelPago()) ;
                return parent::setDetallesDelPago($v);
            }
            public function setImporte($v){
                $this->importe_old =($this->getImporte());
                return parent::setImporte($v);
            }
            public function setCategoriaEgresosId($v){
                $this->CategoriaEgresosId_old = ($this->getCategoriaEgresosId());
                return parent::setCategoriaEgresosId($v);
            }
            public function setsfguardUser($v){
                $this->sf_guard_user_old = ($this->getSfGuardUser());
                return parent::setSfGuardUser($v);
            }
            public function setCreatedAt($v){
                $this->created_at_old = ($this->getCreatedAt());
                parent::setCreatedAt($v);
            }
            public function getByPosition_old($pos)
	{
		switch($pos) {
			case 0:
				return $this->id_old;
				break;
			case 1:
				return  $this->detalles_del_pago_old;
				break;
			case 2:
				return $this->importe_old;
				break;
			case 3:
				return $this->CategoriaEgresosId_old;
				break;
			case 4:
				return $this->sf_guard_user_old;
				break;
			case 5:
				return $this->created_at_old;
				break;
			default:
				return null;
				break;
		} // switch()
	}

        //

    //Fin de la declaración



















    public function getCategoria(){
        return $this->getcategoria_egresos();
    } 

    private function SumMovimientos(){
        $criteria = new Criteria();
        $criteria->add(movimientosPeer::EGRESOS_ID,$this->getid());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        if(!$movimientos){
           $movimientos = new movimientos();
           $movimientos->setCierreCajaId($movimientos->BuscarCajaAbierta());
        }
        $movimientos->setMontoegreso($this->getImporte());
        $movimientos->setEgresosId($this->getId());
        $movimientos->setCategorias($this->getcategoria_egresos());
        $movimientos->setDescripcion($this->getDetallesDelPago());
        $movimientos->save();
    }

    public function save(PropelPDO $con = null){
        if(!$this->isNew())
                auditoria::AuditoriaFull($this);
        $affectedRows =  parent::save($con);
        $this->SumMovimientos();
        return $affectedRows;
    }

    private function BorrarMovimientos(){
         $criteria = new Criteria();
         $criteria->add(movimientosPeer::EGRESOS_ID,$this->getid());
         $movimientos = movimientosPeer::doSelectOne($criteria);
         $movimientos->delete();
    }
    private function AuditarBorrado(){
        $auditoria = new auditoria();
        $auditoria->setEvento('BORRADO');
        $auditoria->setTabla('EGRESOS');
        $usuario = sfContext::getInstance()->getUser();
        $auditoria->setUsuario($usuario);
        $auditoria->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Detalles del Pago');
        $au_det->setValoranterior($this->getDetallesDelPago());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Importe');
        $au_det->setValoranterior($this->getImporte());
        $au_det->setNuevovalor('');
        $au_det->save();
        $au_det = new auditoria_detalle;
        $au_det->setAuditoriaId($auditoria->getId());
        $au_det->setCampo('Fecha');
        $au_det->setValoranterior($this->getCreatedAt('d-m-Y'));
        $au_det->setNuevovalor('');
        $au_det->save();
    }
    public function AuditarActualizacion(){             

              $auditoria = new auditoria();
              $auditoria->setEvento('MODIFICACION');
              $auditoria->setTabla('EGRESOS');
              $usuario = sfContext::getInstance()->getUser();
              $auditoria->setUsuario($usuario);
              $auditoria->save();


            /*  switch ($this){

                  
                  case $this->getcategoria_egresos_old() <> $this->getcategoria_egresos():

                      break;
                 case 
                     break;
                 case 
                     break;
                 default:
                     return null;
             }
             //Creando los Detalles para la Auditoria
             */
             //if($egresos->getDetallesDelPago()<>$this->getDetallesDelPago()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Detalles del Pago');
                 $au_det->setValoranterior($this->getDetallesDelPago_old());
                 $au_det->setNuevovalor($this->getDetallesDelPago());
                 $au_det->save();
                 
             //}
             //if($egresos->getImporte()<>$this->getImporte()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Importe');
                 $au_det->setValoranterior($this->getImporte_old());
                 $au_det->setNuevovalor($this->getImporte());
                 $au_det->save();
             //}
             //if($egresos->getCategoriaEgresosId() != $this->getCategoriaEgresosId()){
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Categoria Egresos');
                 $au_det->setValoranterior($this->getcategoria_egresos_old());
                 $au_det->setNuevovalor($this->getcategoria_egresos());
                 $au_det->save();
                 $au_det = new auditoria_detalle;
                 $au_det->setAuditoriaId($auditoria->getId());
                 $au_det->setCampo('Fecha');
                 $au_det->setValoranterior($this->getCreatedAt_old('d-m-Y'));
                 $au_det->setNuevovalor($this->getCreatedAt('d-m-Y'));
                 $au_det->save();
             //}

             }

      
         
    
    public function delete(PropelPDO $con = null){
        auditoria::AuditoriaFull($this,true);
        $this->BorrarMovimientos();
        return parent::delete($con);
        
    }
    public function __toString() {
        return $this->getId();
    }

    public function EsBorrable(){
        $criteria = new criteria; $criteria->add(movimientosPeer::EGRESOS_ID,$this->getId());
        $movimientos = movimientosPeer::doSelectOne($criteria);
        $cierre = $movimientos->getcierre_de_caja();
        return $cierre->getAbierto();
    }
}
